// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    document.body.classList.add('sidenav-pinned')
    document.body.classList.add('ready')
  }, 200)
})

// 每个页面都会导入该js 统一的设置写这里即可
// ------------- toast抽取未方法 -------------
// 变量建议也存到 function的内部
function tip (msg) {
  // 1 保存dom元素
  const toastDom = document.querySelector('#myToast')
  // 2 创建 toast对象 轻提示
  const toast = new bootstrap.Toast(toastDom)
  // 逻辑略
  // 2.5 需要提示信息
  document.querySelector('.toast-body').innerHTML = msg
  // 3 弹出
  toast.show()
}
// 设置基地址
axios.defaults.baseURL = 'http://ajax-api.itheima.net'
// ------------- 测试请求拦截器 -------------
// 添加请求拦截器
axios.interceptors.request.use(
  // config(配置) 形参 可以改名字 定义函数时 形参
  function (config) {
    // 可以不可以把token的携带 也写在这里呢?
    // headers是个对象,可以动态添加属性
    config.headers.Authorization = localStorage.getItem('usertoken')
    // 在发送请求之前做些什么
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  // response(响应)  形参 可以改名字
  function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    console.log('response:', response)
    return response.data
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 2xx以外的 基本都是异常
    // 400 401 422 409 500....
    // console.log('响应拦截器-异常部分的逻辑')
    // console.dir(error)
    // 只要服务器返回的 http状态码是错误 就会执行到这里
    // 可以在这里对于请求的异常 统一判断,比如 token有问题
    // 如果有其他的异常也要统一处理可以继续编写类似的判断
    if (error.response.status === 401) {
      localStorage.removeItem('usertoken')
      localStorage.removeItem('username')
      // 去登录页
      window.location.href = './login.html'
    }
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

// ------------- 获取+设置用户名 -------------
const username = localStorage.getItem('username')
const nameSpan = document.querySelector('#navbar-main .text-sm')
// console.log('nameSpan:', nameSpan)
// nameSpan存在 再赋值 nameSpan可以获取到 dom元素--布尔值 true
// if (nameSpan !== null) {
if (nameSpan) {
  nameSpan.innerHTML = username
}

// ------------- 用户登出 -------------
const logoutDom = document.querySelector('#logout')

// 表达式1 为真 才会解析表达式2
// dom元素存在 才会去绑定事件
console.log('logoutDom:', logoutDom)
logoutDom &&
  (logoutDom.onclick = function () {
    // 删除保存的用户名 和 token
    localStorage.removeItem('username')
    localStorage.removeItem('usertoken')
    // 去登录页 js中 ./无法出现login.html
    // 相对路径 以 js文件最终导入的页面为准
    window.location.href = './login.html'
  })

/*
  添的测试用文本
  🥚🏀🐶🦴🥩🥩🍉🥚🐿️🐿️🐿️🥦🦴
  🐔🐔🐔🐔🐔🐔🐔🐔🐔🐔🐔🐔🐔
  🦆🦆🦆🦆🦆🦆🦆🦆🦆🦆🦆🦆🦆
*/
